package com.macro.mall.portal.dao;

import com.macro.mall.model.OmsOrderItem;
import com.macro.mall.portal.domain.OmsOrderDetail;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 前台订单自定义Dao
 * Created by macro on 2018/9/4.
 */
public interface PortalOrderDao {
    /**
     * 获取订单及下单商品详情
     */
    OmsOrderDetail getDetail(@Param("orderId") Long orderId);

    /**
     * 修改 pms_sku_stock表的锁定库存及真实库存
     */
    int updateSkuStock(@Param("itemList") List<OmsOrderItem> orderItemList);

    /**
     * 获取超时订单
     * @param minute 超时时间（分）
     */
    List<OmsOrderDetail> getTimeOutOrders(@Param("minute") Integer minute);

    /**
     * 批量修改订单状态
     */
    int updateOrderStatus(@Param("ids") List<Long> ids,@Param("status") Integer status);

    /**
     * 解除取消订单的库存锁定
     */
    int releaseSkuStockLock(@Param("itemList") List<OmsOrderItem> orderItemList);

    /**
     * 获取经纪人一段时间内的业绩总额
     * @author zhouboyu
     * @Date 2020年9月15日
     * @param agentId
     * @param start
     * @param end
     * @return
     */
    BigDecimal getTotalAmount(@Param("agentId")Long agentId, @Param("start")Date start, @Param("end")Date end);

    /**
     * 获取当前经纪人所有佣金总金额
     * @param agentId
     * @return
     */
    BigDecimal getAllCommission(@Param("agentId")Long agentId);

    /**
     * 通过订单id获取买家的头像列表
     * @param orderIds
     * @return
     */
    List<Map<String,String>> getPicList(@Param("orderIds")List<Long> orderIds);

    /**
     * 获取所选经纪人一定时间范围内的所有佣金总额
     *
     * @param agentId
     * @param start
     * @param end
     * @return
     */
    BigDecimal  getAllCommissionByItem(@Param("agentId")Long agentId , @Param("start")Date start, @Param("end")Date end);
}
